Спринт 2/18 → Тема 4/6: Настройка окружения: Git, pytest → Урок 4/7
Status/Add. Отображение изменений, добавление файлов
При работе над проектом нужно сохранять его состояния на разных этапах разработки. У программистов есть отличный инструмент для контроля версий своего проекта — это Git. В Git все версии проекта связаны между собой и разработчик может посмотреть полную историю изменений.
Контроль версий (или версионный контроль) в Git предполагает, что любой файл локального репозитория находится в одном из четырёх состояний:
- Неотслеживаемый (англ. untracked).
- Отслеживаемый, staged, добавленный в Staging Area (англ. «плацдарм», «временное хранилище»). Иначе в Git это называют «добавить в индекс».
- Изменённый (англ. modified).
- Боевой, на жаргоне разработчиков «закоммиченный» (англ. committed, «брошенный в бой»). В документации такие файлы называются неизменёнными (от англ. unmodified). Иными словами, это файлы, в которых не было никаких изменений с момента последнего коммита (с момента, как разработчик «бросил их в бой»).
Git всегда следит за изменениями, которые происходят в локальном репозитории, будь то создание нового файла или внесение изменений в уже существующий файл. Новый файл в репозитории получает статус «Неотслеживаемый», а файл, содержимое которого разработчик изменил, получает статус «Изменённый».
Чтобы указать Git, что изменения должны быть «сохранены», нужно проиндексировать файлы, то есть перевести их в статус «Отслеживаемый». Далее изменения можно зафиксировать: файлы перейдут в состояние «Неизменённый», а Git начнёт отслеживать уже новые изменения.
Отображение изменений
Откройте проект
backend_test_homework в редакторе кода и запустите терминал. На данный момент вы не вносили изменений в файлы этого репозитория, значит и Git может это подтвердить. Команда, которая показывает текущее состояние репозитория — git status. Введите её в терминале и нажмите Enter:BASH
Git сообщит о том, что ему нечего фиксировать, а значит изменений не было.
Теперь откройте файл program.py, исправьте в нём ошибку (добавьте недостающую скобку) и сохраните файл. Посмотрим, как на эти изменения отреагировал Git.
Снова введите в терминал команду
git status:BASH
Файлы в статусе modified (англ. «изменённый») выделены красным:
В скобках — замечание, что командой
git add можно добавить <файл> в индекс, чтобы включить изменения для коммита:BASH
Как и другие рекомендации
git status, это совет по делу.Добавление изменений в локальном репозитории в индекс
git add (англ. add, «добавить») — команда для добавления изменений в Staging Area, в индекс. После команды укажите имя файла, изменения которого нужно поместить в индекс: git add название_файла.❗ Изменения в локальном репозитории могут быть зафиксированы только после того, как вы добавите их в индекс.
В индекс можно добавить изменения во всех файлах репозитория сразу, для этого есть опция --all (англ. all, «все»):
git add --all. Опцию --all можно заменить точкой: git add . При выполнении этих команд изменения файлов из вложенных каталогов также добавятся в индекс.BASH
Выполните команду
git add program.py, чтобы указать Git, какие изменения нужно будет зафиксировать.Теперь, когда вы добавили файлы в отслеживаемые, проверим, как изменился репозиторий:
BASH
Файл
program.py добавлен в индекс и готов к коммиту. И опять совет от
git status: командой git rm --cached <file> вы можете перевести файл в состояние «неотслеживаемый» (untracked). Совет полезный, в будущем вам пригодится эта опция, но прямо сейчас мы не станем её использовать.Соотнесите команды и действия, которые они выполняют.
Добавляет (англ. add) все файлы в индекс изменений.
git add .
Фиксирует изменения в файле, «бросает его в бой» (англ. committed).
git commit
Отображает статус (англ. status) репозитория.
git status
Клонирует (англ. clone) удалённый репозиторий на компьютер (локально).
git clone ссылка_с_GitHub
Вы потренировались выполнять два простых, но очень важных действия — отслеживать состояние репозитория и добавлять файлы в индекс. В будущем вы будете постоянно пользоваться изученными командами и со временем доведёте работу с ними до автоматизма.